package com.qingmeng.apiinterface.controller;

import com.qingmeng.apiclientsdk.entry.User;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/name")
public class interfaceController {

    @GetMapping("/get")
    public String getNameByGet(String name){
        return "你的名字是：" + name;
    }

    @PostMapping("/post")
    public String getNameByPost(@RequestParam String name){
        return "你的名字是：" + name;
    }

    @PostMapping("/json")
    public String getNameByJson(@RequestBody User user, HttpServletRequest request){
        //从请求头中获取 accessKey
        //1、从请求头中获取到这五个参数
//        String accessKey = request.getHeader("accessKey");
//        String body = request.getHeader("body");
//        String nonce = request.getHeader("nonce");
//        String timestamp = request.getHeader("timestamp");
//        String sign = request.getHeader("sign");
        // 从请求头中获取 secretKey（不传递，而是通过比较判断两个签名是否相同，来判断）
//        String secretKey = request.getHeader("secretKey");
        //2、 从数据库中查询accessKey，并判断是否有效
//        if (!accessKey.equals("4f0d765ee84709c6bb24e8b8448e062e")){
//            throw new RuntimeException("无权限");
//        }
        //3、校验一下随机数 随机数可以存储在redis中或者用hashmap存储，这里也应该查询而不是比较是否大于10000
//        if (Long.parseLong(nonce) > 10000){
//            throw new RuntimeException("无权限");
//        }
        //4、校验时间戳与当前时间的差距， 可以使用常量来保存时间
//        if ((System.currentTimeMillis() / 1000 - Long.parseLong(timestamp)) > 60 * 5){
//            throw new RuntimeException("无权限");
//        }
        //5、校验签名是否正确
        // 这里的secretKey应该从数据库中查询
//        String secretKey = "293700c842413a4576c933d5be2f528d";
//        String serverSign = SignUtils.getSign(body, secretKey);
//        if (!sign.equals(serverSign)){
//            throw new RuntimeException("无权限");
//        }
        return "你的名字是：" + user.getUserName();
    }
}
